package com.vincent.springbucks.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;

/**
 * 公共实体类定义，包含ID,创建时间，更新时间等
 * @author vincent
 * @date 2019/5/12
 * @description
 * MappedSuperclass使得entity的jpa属性定义可以继承
 * Data包含了getter和setter，toString的
 */
@MappedSuperclass
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BaseEntity implements Serializable {
    /**
     * 主键，使用数据库默认的自增策略
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    /**
     * 创建时间，自动已插入时间为值，不可更新
     */
    @Column(updatable = false)
    @CreationTimestamp
    private Date createTime;
    /**
     * 更新时间，实体更新自动更新数据库值
     */
    @UpdateTimestamp
    private Date updateTime;
}
